package com.junjie.blibli.api;

import com.junjie.blibli.result.JsonResponse;
import com.junjie.blibli.service.FileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
public class FileApi {
    @Autowired
    private FileService fileService;

    /**
     * 对文件二进制流进行md5加密，获取唯一标识的接口
     * @param file 文件
     * @return md5唯一标识
     */
    @PostMapping("/md5files")
    public JsonResponse<String> getFileMD5(MultipartFile file) throws Exception{
        String fileMd5 = fileService.getFileMD5(file);
        return new JsonResponse<>(fileMd5);
    }

    /**
     * 断点续传接口，但是在此之前要么先调用slice接口，要么提前在前端分片后再调用该上传接口
     * @param slice 分片本身
     * @param fileMd5 完整文件经过加密生成的唯一字符串
     * @param sliceNo 分片编号
     * @param totalSliceNo 总共分片数量
     */
    @PutMapping("/file-slices")
    public JsonResponse<String> uploadFileBySlices(MultipartFile slice,
                                                   String fileMd5,
                                                   Integer sliceNo,
                                                   Integer totalSliceNo) throws Exception{
        String filePath = fileService.uploadFileBySlices(slice,fileMd5,sliceNo,totalSliceNo);
        return new JsonResponse<>(filePath);
    }

}
